#ifndef __YEAR_INCLUDE
#define __YEAR_INCLUDE

#include <string>

#include "date.h"
#include "month.h"

#define MAX_YEAR 9999 // The maximum year to allow to be created
#define MIN_YEAR 1 // The minimum year to allow to be created
#define DEFAULT_YEAR 2013 // A default year to choose if the user bypasses the input
#define NUM_MONTHS 12 // The number of months in a year

class Year {
        /*
            The integer value of this year (AD)
        */
        int year;
        
        /*
            A pointer to an array of months that comprise this year
        */
        Month::Month* months;
        
    public:
        /* 
            Constructor: Default constructor for this class.
            Parameters: 
                year - An A.D. year between 1 and 9999
                firstDay - the first day in the year, as a day of the week
        */
        Year(int const, int const);
        
        /*
            Destructor for class that ensures months array is de-allocated
        */
        ~Year();
        
        /*
            Getter that returns the Month object for the requested month
            Parameters:
                int monthInYear The month to be fetched
            Returns: The requested month
        */
        Month::Month* getMonth(int const);

    private:
        /*
            Locked default constructor - you must use int,int constructor
        */
        Year();
        
        /*
            Indicates if the year is a leap year or not
            Parameters: N/A
            Returns: True if the year is a leap year, false otherwise
        */
        bool isLeapYear();
};

#endif